import Vue from "vue";
import Vuex from "vuex";
import per from "vuex-persistedstate";
import {
  login,
  userList,
  menus,
  add,
  togStatus,
  modify,
  delUser,
  getRolesList,
  qRolesAdd,
  DelRoles,
  qRolesEdit,
  getPermissionsTree,
  getPermissionsList,
  DelRolesPermissions,
  fJsList,
  UpdatePermissions,
  getGoodsList,
  AddGoodsType,
  delGoodsType,
  TypeEdit,
  getParamsList,
  addParams1,
  addparams2,
  delParams,
  editParams,
  tagDel,
  getGoods,
  addgood,
  reports,
} from "../API/request";
import { Message } from "element-ui";
Vue.use(Vuex);
export default new Vuex.Store({
  plugins: [per()],
  state: {},
  getters: {},
  mutations: {
    setToken(state, token) {
      localStorage.setItem("token", token);
    },
  },
  actions: {
    // 登陆的异步请求
    // 第一个参数本身是上下文的意思，commit是通过结构赋值获取到的，不用{}的话，需要使用上下文.commit提交
    seLogin({ commit }, obj) {
      // 返回一个promise
      return new Promise((resolve) => {
        // 通过接口请求数据
        login(obj).then((res) => {
          // 请求成功
          if (res.data.meta.status == 200) {
            let token = res.data.data.token;
            // 因为actions不能直接修改state的数据，所以需要提交mutations修改
            commit("setToken", token);
            // 将响应到的数据返回出去，在.then接收
            resolve(res);
            // 登陆成功提示
            Message.success(res.data.meta.msg);
          }
        });
      });
    },
    // 用户列表异步请求
    getUserList(a, obj) {
      return new Promise((reslove) => {
        userList(obj).then((res) => {
          reslove(res.data.data);
        });
      });
    },
    // 左侧导航列表
    getMenusList() {
      return new Promise((reslove) => {
        menus().then((res) => {
          reslove(res.data.data);
        });
      });
    },
    // 添加用户列表的数据
    add(a, obj) {
      return new Promise((reslove, reject) => {
        add(obj).then((res) => {
          console.log(res);
          reslove(res.data.meta);
        });
      });
    },
    // 修改用户的状态
    Status(a, obj) {
      return new Promise((reslove) => {
        togStatus(obj).then((res) => {
          reslove(res.data.meta);
        });
      });
    },
    // 修改用户数据
    modification(a, obj) {
      return new Promise((reslove, reject) => {
        modify(obj).then((res) => {
          console.log(res);
          reslove(res.data.meta);
        });
      });
    },
    // 删除用户信息
    deleteUser(a, obj) {
      return new Promise((reslove) => {
        delUser(obj).then((res) => {
          reslove(res.data.meta);
        });
      });
    },

    // 角色
    // 获取角色列表信息
    getRoles() {
      return new Promise((reslove) => {
        getRolesList().then((res) => {
          reslove(res.data);
        });
      });
    },
    // 确认添加角色
    qAdd({ commit }, obj) {
      return new Promise((reslove) => {
        qRolesAdd(obj).then((res) => {
          reslove(res.data);
        });
      });
    },
    // 删除角色
    delRoles({ commit }, obj) {
      return new Promise((reslove) => {
        DelRoles(obj).then((res) => {
          reslove(res.data);
        });
      });
    },
    // 修改角色
    qEdit(a, obj) {
      return new Promise((reslove) => {
        qRolesEdit(obj).then((res) => {
          reslove(res.data);
        });
      });
    },
    // 获取所有权限
    getPermissions() {
      return new Promise((reslove) => {
        getPermissionsTree().then((res) => {
          reslove(res.data);
        });
      });
    },
    // 删除角色指定权限
    delRolesPermissions(a, obj) {
      console.log(obj);
      return new Promise((reslove) => {
        DelRolesPermissions(obj).then((res) => {
          console.log(res);
          reslove(res.data);
        });
      });
    },
    // 获取所有权限类型：list
    getPermissionslist() {
      return new Promise((reslove) => {
        getPermissionsList().then((res) => {
          reslove(res.data);
        });
      });
    },
    // 确认分配角色
    qFpEoles(a, obj) {
      return new Promise((reslove) => {
        fJsList(obj).then((res) => {
          reslove(res.data);
        });
      });
    },
    // 更新角色权限
    qUpdate(a, obj) {
      return new Promise((reslove) => {
        UpdatePermissions(obj).then((res) => {
          reslove(res.data);
        });
      });
    },

    // 商品
    // 获取商品分类列表
    getgoods(a,obj) {
      return new Promise((reslove) => {
        getGoodsList(obj).then((res) => {
          reslove(res);
        });
      });
    },
    // 添加商品分类
    qTypeAdd(a, obj) {
      return new Promise((reslove) => {
        AddGoodsType(obj).then((res) => {
          reslove(res.data);
        });
      });
    },
    // 删除商品分类
    DelType(a, obj) {
      return new Promise((reslove) => {
        delGoodsType(obj).then((res) => {
          reslove(res.data);
        });
      });
    },
    // 确认修改
    qEditType(a, obj) {
      return new Promise((reslove) => {
        TypeEdit(obj).then((res) => {
          reslove(res.data);
        });
      });
    },

    // 分类参数
    jd(a, obj) {
      return new Promise((reslove) => {
        getParamsList(obj).then((res) => {
          reslove(res.data);
        });
      });
    },
    // 添加tag
    addParams(a, obj) {
      return new Promise((reslove) => {
        addParams1(obj).then((res) => {
          reslove(res.data);
        });
      });
    },
    // 添加参数
    qAddParams(a, obj) {
      return new Promise((reslove) => {
        addparams2(obj).then((res) => {
          reslove(res);
        });
      });
    },
    // 删除参数
    delParams1(a, obj) {
      return new Promise((reslove) => {
        delParams(obj).then((res) => {
          reslove(res.data);
        });
      });
    },
    // 修改参数
    qEditParams(a, obj) {
      return new Promise((reslove) => {
        editParams(obj).then((res) => {
          reslove(res.data);
        });
      });
    },
    // 删除tag标签
    delTag(a, obj) {
      return new Promise((reslove) => {
        tagDel(obj).then((res) => {
          reslove(res.data);
        });
      });
    },

    // 获取商品列表数据
    getGoods(a, obj) {
      return new Promise((reslove) => {
        getGoods(obj).then((res) => {
          reslove(res.data);
        });
      });
    },
    // 添加商品
    addGoods(a, obj) {
      return new Promise((reslove) => {
        addgood(obj).then((res) => {
          reslove(res.data);
        });
      });
    },
    // 数据统计
    getReports(){
      return new Promise(reslove=>{
        reports().then(res=>{
          reslove(res.data)
        })
      })
    }
  },
  modules: {},
});
